package com.drug.mingkang.mapper;


import com.drug.mingkang.model.ImmSell;
import com.drug.mingkang.model.vo.EChartsVo;
import com.drug.mingkang.model.vo.SalesProfitVo;
import com.drug.mingkang.model.vo.SalesStatisticsVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * (ImmSell)表数据库访问层
 *
 * @author wutao
 * @since 2020-08-11 12:00:14
 */
public interface ImmSellMapper {

    /**
     * 通过ID查询单条数据
     *
     * @param sellId 主键
     * @return 实例对象
     */
    ImmSell queryById(String sellId);

    /**
     * 查询指定行数据
     *
     * @return 对象列表
     */
    List<ImmSell> queryAllByLimit(@Param("immSell") ImmSell immSell,@Param("companyId") String companyId);
    List<ImmSell> queryAllByLimits(@Param("immSell")ImmSell immSell,@Param("companyId") String companyId,@Param("status") String status);

    /**
     * 统计
     *
     * @return
     */
    int countId(@Param("immSell")ImmSell immSell,@Param("companyId") String companyId);
    int countIds(@Param("immSell")ImmSell immSell,@Param("companyId") String companyId);

    /**
     * 通过实体作为筛选条件查询
     *
     * @param immSell 实例对象
     * @return 对象列表
     */
    List<ImmSell> queryAll(ImmSell immSell);

    /**
     * 新增数据
     *
     * @param immSell 实例对象
     * @return 影响行数
     */
    int insert(ImmSell immSell);

    /**
     * 修改数据
     *
     * @param immSell 实例对象
     * @return 影响行数
     */
    int update(ImmSell immSell);

    /**
     * 通过主键删除数据
     *
     * @param sellId 主键
     * @return 影响行数
     */
    int deleteById(String sellId);
    /**
     * 根据销售ID修改状态
     * @param sellId
     * @return
     */
    int updateStatus(String sellId);

    /**
     *  根据年份查询总(分)公司销售前十销售量药品
     * @param page          页
     * @param limit         条
     * @param salesYear     年份
     * @param companyId     分公司Id
     * @return
     */
    List<EChartsVo> selectMarketFrontShi(@Param("page") Integer page,
                                         @Param("limit") Integer limit,
                                         @Param("salesYear")String salesYear,
                                         @Param("companyId")String companyId);

    /**
     * 根据年份查询分公司 销售总金额与成本总金额对比图 与  销售总金额及毛利对比图 (实现销售量折线统计图)
     * @param salesYear  年份
     * @param companyId   分公司id
     * @return
     */
    List<SalesProfitVo> findTotalCostAllPriceAndSalesProfit(@Param("salesYear") String salesYear,
                                                            @Param("companyId") String companyId);

    /**
     * 根据年份查询分公司销售(每年每月的总销售量)(每月药品销售数量)
     * @param salesStatisticsVo
     * @param companyId         分公司Id
     * @return
     */
    List<SalesStatisticsVo> findAllSalesStatistics(SalesStatisticsVo salesStatisticsVo);

    /**
     * 根据年份查询总公司销售药品总条数
     * @param salesStatisticsVo
     * @param companyId     分公司Id
     * @return
     */
    int findAllSalesStatisticsCount(SalesStatisticsVo salesStatisticsVo);

    /**
     *  修改审核状态
     * @param sellId    销售id
     * @param isva      状态
     * @param sellType         0 零售  1 批发
     */
    int fupdate(@Param("sellId") String sellId,
                @Param("isva") Integer isva,
                @Param("sellType") String sellType);


}